import { reqGoosInfo,reqAddOrUpdateShopCart } from "@/api";
//封装游客临时身份模块 ---》生成一个随机字符串(不能在变了)
import {getUUID} from '@/utils/uuis_token';
const state ={
    goodInfo:{},//不能乱写看数据返回的是数组还是对象
    //游客临时身份
    uuid_token:getUUID(),
};
const mutations ={
       //获取产品信息
    GETGOODINFO(state, goodInfo){
        state.goodInfo = goodInfo;
    }
};
const actions ={
    //获取产品信息的action
     async getGoodInfo({ commit },skuId){
                                 // 带参数
        let result = await reqGoosInfo(skuId);
        if(result.code == 200){
            commit("GETGOODINFO", result.data);
        }
     },
     //将产品添加到购物车
     async addOrUpdateShopCart({commit} , {skuId,skuNum}){
        //加入购物车等待返回的结果
        //不需要三连环,仓库存储数据了
        //注意：async函数执行返回的结果一定是一个Promise【要么成功，要么失败】
        let result = await reqAddOrUpdateShopCart(skuId, skuNum);
        if(result.code = 200){
            //返回的是成功的标记
            return "ok";
        }else{
            //返回的失败的标记
            return Promise.reject(new Error("faile"))
        }
     }
};
//简化数据而生
const getters ={
    //路径导航简化的数据
    categoryView(state){
        //比如：state.goodInfo 初始状态空对象， 空对象的categoryView属性值为undefined
        //当前计算出的 categoryView 属性值至少是一个空对象，报错不会有了
        return state.goodInfo.categoryView || {};
    },
    //商品详情信息
    skuInfo(state){
        return state.goodInfo.skuInfo || {};
    },
    //产品售卖属性的简化
    spuSaleAttrList(state){
        return state.goodInfo.spuSaleAttrList || [];
    }
};

export default  {
    state,
    mutations,
    actions,
    getters
}